import { UserRole, Gender, UserStatus } from '../enum'
import { Artist, ArtistEdition } from '../resources/artist.dto'
import { Song } from '../resources/song.dto'
import { Album, AlbumEdition } from '../resources/album.dto'
import { PlayList } from '../resources/play-list.dto'
import { Score } from '../resources/score.dto'
import { Post } from '../resources/post.dto'
import { Track } from '../resources/track.dto'

export interface User {
  id: number;
  username: string;
  password: string;
  email: string;
  emailValidatedAt: Date;
  phone: string;
  phoneValidatedAt: Date;
  avatar: string | Blob;
  gender: Gender;
  birthday: Date;
  introduction: string;
  roles: UserRole[];
  status: UserStatus;
  followedArtists?: Artist[];
  favSongs?: Song[];
  favAlbums?: Album[];
  playLists?: PlayList[];
  editedArtistEditions?: ArtistEdition[];
  editedAlbumEditions?: AlbumEdition[];
  uploadedScores?: Score[];
  uploadedTracks?: Track[];
  posts?: Post[];
  createdAt: Date;
  updatedAt: Date;
}
